package movilmax.sia_corp.action;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ActionContext;

import movilmax.sia_corp.model.Departamento;
import movilmax.sia_corp.model.Listax;
import movilmax.sia_corp.model.Usuario;
import apli.conectar.Conectar;
import basedatos.Resultado;


public class CargarDepartamentos extends ActionSupport {
	
	private static final long serialVersionUID = -6012465558842560879L;
	private List<Listax>   departamentoS;
	private List<Listax>   departamentos;
	private List<Listax>   departamentos_;
	private Conectar BASE;
	private Usuario USUARIO;
	private Departamento departamento;
	
	@SuppressWarnings("rawtypes")
	public String cargarDepartamentos(){
		Resultado RCS= new Resultado();
		departamentos=new ArrayList<Listax>();
		Map session = ActionContext.getContext().getSession();
		Usuario USUARIO = (Usuario)session.get("ses_usuario");
		String SQL;

		if(!USUARIO.getJerarquia().equals("GERENTE GENERAL")){
			  //SQL="SELECT D.cod,D.descripcion FROM departamentos D WHERE D.descripcion='"+USUARIO.getDepartamento().getDescripcion()+"' ";
			 SQL="SELECT D.cod,D.descripcion FROM empleados E,departamentos D WHERE e.departamento=d.cod AND e.codigo='"+USUARIO.getCodEmpleado()+"' AND D.cod !='20' ORDER BY D.descripcion";
			
			  //System.out.println(SQL);
			  RCS=BASE.getBaseDatos().consultar(SQL);
			  Listax LST=new Listax();
			  LST.setCod(RCS.getCadena("cod"));
			  LST.setDescripcion(RCS.getCadena("descripcion"));
			  departamentos.add(LST);
			  
		}else{
			
			SQL="SELECT D.cod,D.descripcion FROM departamentos D WHERE D.cod!='20'  ORDER BY D.descripcion ";
			RCS=BASE.getBaseDatos().consultar(SQL);
				  if(RCS.RP){
					  do{ 
						  Listax LST=new Listax();
						  LST.setCod(RCS.getCadena("cod"));
						  LST.setDescripcion(RCS.getCadena("descripcion"));
						  departamentos.add(LST);
					  }while(RCS.sigItem()); 
				  }
		}
		//return SUCCESS;
		//  this.addActionError("La sesion del usuario ha caducado");
		 // session.remove("ses_usuario");
		  return SUCCESS;
	}
	

	@SuppressWarnings("rawtypes")
	public String cargarDepartamentos_(){
		Resultado RCS= new Resultado();
		departamentoS=new ArrayList<Listax>();
		Map session = ActionContext.getContext().getSession();
		Usuario USUARIO = (Usuario)session.get("ses_usuario");
		String SQL;
			
			SQL="SELECT D.cod,D.descripcion FROM departamentos D WHERE D.cod!='20'  ORDER BY D.descripcion ";
			if(!USUARIO.getJerarquia().equals("GERENTE GENERAL")){
				SQL="SELECT D.cod,D.descripcion FROM departamentos D WHERE D.cod!='20' AND D.cod='"+ USUARIO.getDepartamento().getCod() +"'  ORDER BY D.descripcion ";
			}
			RCS=BASE.getBaseDatos().consultar(SQL);
				  if(RCS.RP){
					  do{ 
						  Listax LST=new Listax();
						  LST.setCod(RCS.getCadena("cod"));
						  LST.setDescripcion(RCS.getCadena("descripcion"));
						  departamentoS.add(LST);
					  }while(RCS.sigItem()); 
				  }
		
		  return SUCCESS;
	}
	
	@SuppressWarnings("rawtypes")
	public String cargarDepartamentosGeren(){
		Resultado RCS= new Resultado();
		departamentos_=new ArrayList<Listax>();
		Map session = ActionContext.getContext().getSession();
		Usuario USUARIO = (Usuario)session.get("ses_usuario");
		String SQL;

		if(USUARIO.getJerarquia().equals("EMPLEADO" )){
			//SQL="SELECT D.cod,D.descripcion FROM departamentos D WHERE D.descripcion='"+USUARIO.getDepartamento().getDescripcion()+"' ";
			SQL="SELECT D.cod,D.descripcion FROM empleados E,departamentos D WHERE e.departamento=d.cod AND e.codigo='"+USUARIO.getCodEmpleado()+"' ORDER BY D.descripcion";
			 // System.out.println(SQL);
			  RCS=BASE.getBaseDatos().consultar(SQL);
			  Listax LST=new Listax();
			  LST.setCod(RCS.getCadena("cod"));
			  LST.setDescripcion(RCS.getCadena("descripcion"));
			  departamentos_.add(LST);
			  
		}else if(USUARIO.getJerarquia().equals("GERENTE GENERAL")  ){
			
			SQL="SELECT D.cod,D.descripcion FROM departamentos D WHERE D.cod!='20' ORDER BY D.descripcion ";
			RCS=BASE.getBaseDatos().consultar(SQL);
				  if(RCS.RP){
					  do{ 
						  Listax LST=new Listax();
						  LST.setCod(RCS.getCadena("cod"));
						  LST.setDescripcion(RCS.getCadena("descripcion"));
						  departamentos_.add(LST);
					  }while(RCS.sigItem()); 
				  }
		}else if (USUARIO.getJerarquia().equals("GERENTE")){
			
			SQL="SELECT D.cod,D.descripcion FROM departamentos D WHERE D.cod!='20' ORDER BY D.descripcion ";
			RCS=BASE.getBaseDatos().consultar(SQL);
				  if(RCS.RP){
					  do{ 
						  Listax LST=new Listax();
						  LST.setCod(RCS.getCadena("cod"));
						  LST.setDescripcion(RCS.getCadena("descripcion"));
						  departamentos_.add(LST);
					  }while(RCS.sigItem()); 
			
				  }	
		}
		//return SUCCESS;
		//  this.addActionError("La sesion del usuario ha caducado");
		 // session.remove("ses_usuario");
		  return SUCCESS;
	}
	


	public String getJSON(){
		BASE=new Conectar();
		if(BASE.getMsg().equals("SI")){
			cargarDepartamentos();
			cargarDepartamentosGeren();
			cargarDepartamentos_();
			BASE.getBaseDatos().cerrarConexion(); 
		  	return SUCCESS;
		}else{
			this.addActionError("No hay conexion al servidor");
			return ERROR;
		}
		 	

  }
	
	
	public Usuario getUSUARIO() {
		return USUARIO;
	}

	public void setUSUARIO(Usuario uSUARIO) {
		USUARIO = uSUARIO;
	}

	public List<Listax> getDepartamentos() {
		return departamentos;
	}

	public void setDepartamentos(List<Listax> departamentos) {
		this.departamentos = departamentos;
	}

	public Departamento getDepartamento() {
		return departamento;
	}

	public void setDepartamento(Departamento departamento) {
		this.departamento = departamento;
	}

	public List<Listax> getDepartamentos_() {
		return departamentos_;
	}

	public void setDepartamentos_(List<Listax> departamentos_) {
		this.departamentos_ = departamentos_;
	}

	public List<Listax> getDepartamentoS() {
		return departamentoS;
	}

	public void setDepartamentoS(List<Listax> departamentoS) {
		this.departamentoS = departamentoS;
	}
	
	
	
	

}
